package editor3d;
import java.util.*;
public class TablaMetodo extends LinkedList <Metodo>{

	public void addItem(Metodo metodo){
		add(metodo);
	}

	/**
	* Busca un metodo por su nombre y parametros
	* @param nombre El nombre del metodo buscado
	* @param param lista de parametros
	* @return Regresa un objeto simbolo si lo encuentra o null si no
	*/
	public Metodo searchSimbol(String nombre, LinkedList <Param> param){
		for(int i = 0; i< size(); i++){
			Metodo sim = get(i);
			if(sim.getParametros() != null){
				if(sim.getNombre().equals(nombre) && linkEquals(sim.getParametros(), param))
					return sim;
			} else if(sim.getNombre().equals(nombre))
				return sim;
		}
		return null;
	}

	public boolean linkEquals(LinkedList <Param> una, LinkedList <Param> dos){
		int cont = 0;
		if(una.size() == dos.size()){
			for(int i = 0; i< una.size(); i++){
				Param u = una.get(i);
				Param d = dos.get(i);
				if(u.tipo == d.tipo && u.clase == d.clase && u.size == d.size){
					if(u.claseStr == null && d.claseStr == null)
						cont++;
					else if (u.claseStr.equals(d.claseStr))
						cont++;
				}
			}
			if(cont == una.size())
				return true;
		}
		return false;
	}

	@Override
	public String toString(){
		String temp = "";
		for(int i = 0; i<size(); i++){
			temp += get(i);
		}
		return temp;
	}
}